package red.social;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class CrearGrupo extends Activity implements OnClickListener{
	private EditText nombre;
	private Bundle parametros;
	private int idUsuario;
	private String ip;
	private String SERVLET_URL;
	private String datos, sitio;
	private TextView mensajito;
	private ListView lView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.creargrupo);
		
		ip = getResources().getString(R.string.ip);
		SERVLET_URL = "http://"+ip+":8080/Modulo10-war/GruposServlet";
		
		this.mensajito = (TextView) this.findViewById(R.id.textViewAmigosSeleccionadosParaGrupo);
		parametros = getIntent().getExtras(); 

		if (parametros.isEmpty()) {
			Toast.makeText(this,"No se han recuperado parametros", Toast.LENGTH_LONG).show();
		} else {
			idUsuario = parametros.getInt("idUsuario"); 
		}
		nombre = (EditText) this.findViewById(R.id.editTextNombreGrupo);
		Button crear = (Button) this.findViewById(R.id.buttonCrear);
		Button addAmigos = (Button) this.findViewById(R.id.buttonAddFriends);
		
		crear.setOnClickListener(this);
		addAmigos.setOnClickListener(this);
		
		// limpiamos el textView que va a contener el nombre del nuevo grupo
		nombre.setText("");
		
		//recuperamos los nombres de los amigos seleccionados
		List<String> listaNombreAmigosSeleccionados = parametros.getStringArrayList("nombreAmigosSeleccionados");
		
		if(listaNombreAmigosSeleccionados!=null){
			// ponemos un mensajito
			this.mensajito.setText("Se enviaran solicitudes a los siguientes amigos:");
			
			// introducimos en el listView los amigos
			// rellenamos el listView
			lView = (ListView) findViewById(R.id.listViewListaAmigosParaAddAGrupos);
			lView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listaNombreAmigosSeleccionados));
		}
	}

	@Override
	public void onClick(View v) {
		String nombreIntroducido;
		
		if (v.equals(this.findViewById(R.id.buttonCrear))){	
			nombreIntroducido = nombre.getText().toString();
			
			if(nombreIntroducido==null || nombreIntroducido.equals("")){
				Toast.makeText(this, "Debe introducir un nombre o pulsar volver",
						Toast.LENGTH_LONG).show();
			}else{
				
				nombreIntroducido=nombreIntroducido.replace(" ","XXXXX"); // codificamos
				
				datos = "?peticion=CREARNUEVOGRUPO&usuario="+idUsuario+"&nombreGrupo="+nombreIntroducido;

				// comprobamos si ha sido seleccionado algun amigo
				List<Integer> listaCodigosAmigos = parametros.getIntegerArrayList("amigosSeleccionadosGrupo");
				if(listaCodigosAmigos != null){
					
					int numAmigos = listaCodigosAmigos.size();
					datos+="&numAmigos="+numAmigos;
					int indice = 0;
					
					for(Integer a: listaCodigosAmigos){
						if(indice<numAmigos){
							datos+="&idUsuario"+indice+"="+a;
							
							String valor = String.valueOf(a);
							Log.i("CrearGrupo","Codigo seleccionado: "+valor);
							
							indice+=1;
						}
					}
				}

				sitio = SERVLET_URL + datos;
				
				Log.i("Acceder", "Debo ir a: " + sitio);
				
				try {
					
					URL ob = new URL(sitio);
					URLConnection conn = ob.openConnection();
					conn.setDoInput(true);
			        conn.setDoOutput(true);
			        InputStream in= conn.getInputStream();	        
			        DataInputStream dos = new DataInputStream(in);

					int esGrupoCreado = dos.readInt();
					

					if(esGrupoCreado==1){
						Toast.makeText(this, "El grupo ya existe",
								Toast.LENGTH_LONG).show();
					}else if(esGrupoCreado==2){
						Toast.makeText(this, "Grupo creado",Toast.LENGTH_LONG).show();
						
						Intent irAGrupos = new Intent();
						irAGrupos.putExtra("idUsuario", idUsuario);
						irAGrupos.putExtra("vengoDe", "GRUPOS");
						irAGrupos.setClass(this, Main.class);
						this.startActivity(irAGrupos);
					}

					// cerramos el flujo
					dos.close();	
					
				} catch (IOException e) {
					Toast.makeText(this, "IOEx: " + e.getMessage(),
							Toast.LENGTH_LONG).show();
				}
			}
		}else if(v.equals(this.findViewById(R.id.buttonAddFriends))){			
			Intent irAListaAmigos = new Intent();			
			irAListaAmigos.putExtra("idUsuario", idUsuario);
			irAListaAmigos.setClass(this, ListaAmigos.class);
			this.startActivity(irAListaAmigos);
		}
	}

}